package common.util;

import org.apache.commons.codec.digest.DigestUtils;

import common.pojo.InfoEnum;

/***
 * 加密的工具类
 * @author lby
 *
 */
public class EncryptUtil
{
	private RegexUtil regexUtil = new RegexUtil();
	/***
	 * 加密算法
	 */
	private String encodeName  = "sha256";
	/***
	 * 分隔符
	 */
	private String split = "$";
	/***
	 * 加密
	 * @param souStr 明文
	 * @return sha256(加密算法)$随机数字$sha256(随机数字+明文)
	 *      sha256+$+随机数字+$+密文(随机数+密码)
	 */    
	public String encodeStr(String souStr)
	{
		StringBuffer sb = new StringBuffer();
		/*sha256(加密算法)$*/
		sb.append(encodeName).append(split);
		/*随机字符串$*/
		String randStr = this.regexUtil.proccedRandStr(30,InfoEnum.VAR_NUMCHAR);
		sb.append(randStr).append(split);
		/*sha256随机字符串+明文*/
		String encodeSou = DigestUtils.sha256Hex(randStr+souStr);
		sb.append(encodeSou);
		return sb.toString();
	}
	public boolean checkStr(String souStr,String encodeStr)
	{
		/*截取，获取随机数字符串*/
		String[] encodeStrs = encodeStr.split("\\$");
		/* 是数组的长度不是字符串的长度 */
		if(encodeStrs.length !=3)
		{
			return false ;
		}
		StringBuffer sb = new StringBuffer();
		/*随机字符串*/
		sb.append(encodeName).append(split);
		/*随机字符串*/
		String randStr = encodeStrs[1]; 
		sb.append(randStr).append(split);
		/* sha256(随机字符串+明文) */
		String encodeSou = DigestUtils.sha256Hex(randStr + souStr) ; 
		sb.append(encodeSou);

		/* 判断 */
		System.out.println("=aaaa===>" + encodeSou);
		return sb.toString().equals(encodeStr);
	}
	public static void main(String[]ages)
	{
		EncryptUtil encryptUtil = new EncryptUtil();
		
		String souStr = "111111" ; 
//		for(int i = 0 ; i < 5 ; i ++)
//		{
			/* 加密 */
			String encodeStr = encryptUtil.encodeStr(souStr) ; 
			System.out.println(souStr + "==加密==" + encodeStr);
			
			encodeStr = "sha256$GGI2crz7GcIrErf8ivnafUEfn4Q43zZh$f0b7b4df64f0067b853a9a4ab73a6c138486580d437b28e89da95a6ac565d3a3" ; 
			boolean flag = encryptUtil.checkStr("111111", encodeStr);
			System.out.println("=checkStr===>" + flag);
//		}
	}
	
}
